package cn.niit.pm.controller;

import cn.niit.pm.entity.Employee;
import cn.niit.pm.service.EmployeeService;
import io.swagger.annotations.Api;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpSession;

/*
 * fahui
 * 有关登录请求的中转
 * */
@Api(value = "测试接口", tags = "登录管理相关的接口")
@Controller
public class LoginController {
    @Autowired
    private EmployeeService employeeService;
    //未登录用户 访问登录页面，加载显示登录页

    @RequestMapping(value="/login",method = RequestMethod.GET)
    public String login(HttpSession session){
        System.out.println("用户进入登录页面");
        if (isLogin (session)){                  //记录用户登录信息第二步  校验如果登陆过了  就直接还是返回到index中
            return "home";
        }
        return "login";
    }

    private boolean isLogin(HttpSession session) {
        Object user = session.getAttribute("employee");//取session中的值以在上面“记录用户登录信息第二步 ”中校验
        if (null!=user){
            return true;
        }
        return false;
    }


    /**
     *
     * 登录操作 当用户点击登录页面“登录”按钮时触发
     * */
    @PostMapping("/login")
    public String toLogin(Model model, HttpSession session, @RequestParam("employeeName") String employeeName, @RequestParam("password")String password){
        /*校验参数是否为空------因为前段亦设置了必填字段 后端也必须验证  @RequestParam  */
        if("".equals(employeeName.trim())||"".equals(password.trim())){//trim是为了防止输入空格
            model.addAttribute("eerMsg","用户名/密码不能为空！！！");   //attributeName是为了向前段页面传输值
            System.out.println("用户名/密码不能为空！！！");
            return "login";
        }
        /**打印用户输入的用户名和密码 **/
        System.out.println("用户输入的账号、密码：employeeName = " + employeeName + " password = " + password);
        /*第一步：根据用户名（employeeName）拿到数据库的账号密码*/
        Employee mysqlEmployee = employeeService.selectByEmployeeNamePassword(employeeName,password);
        System.out.println("mysqlEmployee=:"+mysqlEmployee);
        /*第二步：校验数据库的密码和用户输入的密码是否一致*/
        if(null==mysqlEmployee){
            model.addAttribute("eerMsg","用户名/密码错误！！！");//用户名或密码错误后的提示
            return "login";//如果数据不一致  直接返回到login页面
        }
        /*第三步:将用户登录信息存储至会话（session）当中——当页面刷新后 不用再去登录*/
        session.setAttribute("employee",mysqlEmployee); //从mysqlEmployee中拿到employeeName后存储到session中
        return "redirect:/home";
    }

}
